承襲上一篇的 AOSP 的下載及編譯,
因為 kernel 的部份在 AOSP 是預編好的檔案,
所以這次我們要來學習一下,
怎麼客製化我們 kernel 的部份.
可以透過 這裡 查詢到版本
查到 Pixel XL 是
android-msm-marlin-3.18-pie-qpr2
$ repo init -u https://android.googlesource.com/kernel/manifest -b android-msm-marlin-3.18-pie-qpr2
$ repo sync -j8
取得原始碼後,在此原始碼根目錄下可以列出以下目錄及一個連結檔:
所以以前的 AOSP 內核編譯需要先把 AOSP 環境架設好,
然後內核的編譯才能「依附」其下。
現在的內核編譯採用了「自給自足」模式。
$ ./build/build.sh
執行完成後你會看到 Log 最後一行會出現,Files copied to ~
就是輸出核心映像(Kernel Image)的位置,
到該目錄下,會看到我們要的 Image.lz4-dtb
檔案。
和其他有的沒的檔案,這邊就不附圖了。
你可以直接將
out/android-msm-marlin-4.4/dist
的Image.lz4-dtb
放到 AOSP 環境中的相對位置device/google/marlin-kernel/
後,
或是宣告一個環境變數TARGET_PREBUILT_KERNEL
指向 out 這個位置,
再重新 re-build boot image 即可.
$ make bootimage
Android提供「不刷機測試核心」的功能,好處就是如果改壞Kernel了,重開機後(一般是長按Power Key 15秒),就能回復原有的Kernel核心,這也降低了把手機刷壞的機率(理論上目前的手機要刷壞到無法重刷那也不容易)。不刷機直接從新編譯的核心開機命令如下,先將目錄轉換至核心輸出目錄,
out/android-msm-marlin-4.4/dist
,執行:
$ adb reboot bootloader
$ fastboot boot Image.lz4-dtb
之後就可以從 dmesg
看出 kernel 編譯的時間確認有燒錄成功。
Building Kernels | Android Open Source Project